package com.hnust.service;

import com.hnust.domain.accept.PaperData;
import com.hnust.domain.record.*;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * 创建人：gh
 * 创建时间：2020/10/29
 * 描述：
 */
public interface PaperService {

    boolean delTestPaper(String paper_id); // 删除试卷

    /**
     * // 获取试卷列表
     * @param id 老师id
     * @param course_id 课程id
     * @param now_page 当前第几页
     * @return List
     */
    List<PageData> getPaperList(String id, String course_id, int now_page);

    /**
     * // 获取试卷的总的量
     * @param course_id 课程id
     * @param id 老师id
     * @return int
     */
    int getPaperListCount(String course_id, String id);

    /**
     * 保存试卷
     * @param paperData 试卷和题目信息
     * @return 是否保存成功
     */
    boolean saveCompletePaper(PaperData paperData);

    /**
     * // 将试卷设为样卷
     * @param pap_id 试卷id
     * @return boolean
     */
    boolean setPaperToSample(String pap_id);

    /**
     * 试卷列表 --- 设置试卷不为样卷
     * @param pap_id 试卷id
     * @return 返回影响行数
     */
    boolean removePaperToSample(String pap_id);

    /**
     *  获取所有的题型信息
     * @return 返回所有的题型信息
     */
    List<QuestionTypeRecord> getAllQuestionType();

    /**
     * 自动生成试卷
     * @param listPaperQues 参数对象
     * @return 返回结果
     */
    List<SubjectData> getAutoPaper(List<PaperQues> listPaperQues, String course_id);

    /**
     * 获取某个课程，某个题型的所有题目
     * @param cou_id 课程id
     * @param type_id 题目类型
     * @param now_page 当前第几页
     * @return 结果
     */
    SubjectInfo getCourseQuesList(String cou_id, String type_id, int now_page);

    /*
     * @Author Tonited
     * @Description //TODO 生成doc文件和预览图，返回文件ID（文件名为ID）
     * @Date 10:20 2020/10/31
     * @Param [info]
     * @return java.lang.String
     **/
    String getPaperPreview(GeneratePapaerInfoRecord info) throws Exception;

    /**
     * @Author Tonited
     * @Description //TODO 生成doc文件和预览图的工具方法
     * @Date 16:41 2020/10/31
     * @Param [path, info]
     * @return void
     **/
    void createPaperDocxAndPic(String path,String id,GeneratePapaerInfoRecord info) throws Exception;


    /**
     *  根据课程id，题目类型，关键词，当前页数来查找题目
     * @param courseId 课程id
     * @param typeId 题目类型
     * @param keyword 关键词
     * @param now 当前页数
     * @param diff 难度
     * @return 返回值类型
     */
    SubjectInfo searchQuestionByCon(String courseId,String typeId,String keyword,Integer now,Integer diff);

    /**
     *  检查重复的题目
     * @param courseId 课程id
     * @param subjectIds 题目列表
     * @return 返回重复的题目列表
     */
    List<RepeatQues> checkPaperRepeat(String courseId,List<String> subjectIds);

    /*
     * @Author Tonited
     * @Description //TODO 设置题目为隐藏（仅老师可见
     * @Date 20:54 2020/12/15
     * @Param [questionIds]
     * @return java.lang.Boolean
     **/
    Boolean setDisableQue(List<String> questionIds) throws Exception;
}
